import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: LIUYANJIAO
 * Date: 2024-04-27
 * Time: 18:43
 *///TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        //二进制中1的个数

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int count = 0;
            while (n != 0) {
                n = n & (n - 1);
                count++;
            }
            System.out.println(count);
        }
    }
    public static void main8(String[] args) {
        //辗转相除法
        Scanner scanner=new Scanner(System.in);
        int a= scanner.nextInt();
        int b= scanner.nextInt();
        int max=Math.max(a,b);
        int min=Math.min(a,b);
        while(max%min!=0){
            int tmp=min;
            min=max%min;
            max=tmp;
        }
        System.out.println(min);
    }
    public static void main7(String[] args) {
        double sum=0;
        int j=1;
        for (int i = 1; i <= 100; i++) {
            sum+=1.0/i*j;
            j=-j;
        }
        System.out.println(sum);
    }
    public static void main6(String[] args) {
        int count=0;
        for(int i=0;i<=100;i++){
            if(i/10==9){
                count++;
            }if(i%10==9){
                count++;
            }
        }
        System.out.println(count);

    }
    public static int hanoi(int n){
        int count=0;
        if(n==1){
           return 1;
        }else{
            return 2*hanoi(n-1)+1;
        }
    }
    public static void main5(String[] args) {
        //递归求解汉诺塔问题
        System.out.println(hanoi(3));
    }
    public  static int add(int a,int b){
        return a+b;
    }
    public  static double add(double a,double b){
        return a+b;
    }
    public  static double add(double a,int b){
        return a+b;
    }
    public  static int add(int a,int b,int c){
        return a+b+c;
    }
    public  static double add(int a,int b,double c){
        return a+b+c;
    }
    public static void main3(String[] args) {
        // 在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
        System.out.println(add(1,2));
        System.out.println(add(1.0,2.0));
        System.out.println(add(1.0,2));
        System.out.println(add(1,2,3));
        System.out.println(add(1,2,3.0));

    }
    /**
     * 创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
     *
     *     要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
     *
     */
    public static int max(int a,int b, int c){
        a=max(a,b);
        return max(a,c);
    }
    public  static  int max(int a,int b){
        if(a>=b){
            return a;
        }else{
            return b;
        }
    }
    public static void main2(String[] args) {
        System.out.println(max(20,10,4));
    }
//    public  static int func(int n){
//        if(n==1||n==2){
//            return 1;
//        }else{
//            return func(n-1)+func(n-2);
//        }
//    }
//    public static int sum(int n){
//        if(n==0){
//            return 0;
//        }else{
//            return n%10+sum(n/10);
//        }
//    }
//    public static void prin(int a){
//        if(a==0){
//            return ;
//        }else{
//             prin(a/10);
//            System.out.print(a%10+" ");
//            return;
//        }
//    }
    public static void main1(String[] args) {
        int a=3;
        //prin(a);
       // System.out.println(func(6));


    }
}